home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <ctype.h>
- #include <msdos.cf>
- #include <egb.h>
- #include <mos.h>
- #include <snd.h>
- #include "event.h"
- #include "graphic.h"
- #include "msg.h"
- #include "defs.h"
- #include "coldef.h"
-
- #define SECRET (CMDS_MAX-1)
-
- #define CLIP_UP 10
- #define CLIP_Y 18
-
- #define DRV_X 320
- #define DRV_Y 196
-
- #define FILE_X 404
- #define FILE_Y 36
-
- #define CMDS_X 320
- #define CMDS_Y 36
-
- #define CMDS_MAX 9
- #define CMDS_LEN 8
-
- #define DRV_MAX 17 /* A - Q */
- #define DRV_LEN 8
-
- #define FILE_MAX 25
-
- #define DSP_X CLIP_UP
- #define DSP_Y (CLIP_Y+18)
- #define DSP_MAX 25
- #define DSP_LEN 36
-
- #define CLIP_DOWN (CLIP_UP+CLIP_LEN*8+5)
- #define CLIP_X (CLIP_DOWN+CLIP_LEN*8+5)
- #define CLIP_EXIT (CLIP_X+CLIP_SIZ*8+5)
-
- #define CLIP_LEN 2
- #define CLIP_SIZ 26
-
- #define SPC_Y 16
- #define SIZ_Y 11
- #define FNT_SIZ 8 /* 8 or 16 */
- #define FNT_SPC 2
-
- #define WIND_COL COL_JACK
- #define STD_COL COL_CHR
- #define W_BAK_COL COL_JACK
- #define HIT_COL COL_JACK2
- #define BOX1_COL COL_LINE
-
- #define ISDIR(c) (c->att&0x10)
-
- #define IS_FLP 0x00
- #define IS_RES 0x01
- #define IS_SCSI 0x02
- #define IS_RAM 0x03
- #define IS_MDC 0x04
- #define IS_ROM 0x05
- #define IS_CDR 0x06
- #define IS_NON 0xFF
-
- typedef struct _WCBUF {
- struct _WCBUF *next;
- short int mark;
- short int att;
- unsigned short int time,date;
- unsigned long size;
- char name[14];
- } WCBUF;
-
- extern int errno;
-
- int ESR_setupInfo(char *out_buf);
- char *strdup(char *str);
- char *macget(char *str);
-
- static int CDRV=0;
- static int dir_count=0;
- static int file_count=0;
- static int disk_total_free=0;
- static int disk_write_free=0;
- static int topno=0,now_no=0;
- static WCBUF *topwp=NULL,*now_wp=NULL;
- static int sel_event=ERR;
- static char where[256];
- static char sel_buf[2048];
- static char *file_stack[FILE_MAX];
- static unsigned char drive[]={
- ERR,ERR,ERR,ERR,ERR,ERR,ERR,ERR,
- ERR,ERR,ERR,ERR,ERR,ERR,ERR,ERR,
- ERR,ERR,ERR,ERR,ERR,ERR,ERR,ERR };
- static char *dev_name[]={
- "FDD ","??? ","HDD ","RAM ",
- "MDC ","ROM ","CDR ","??? ",
- "??? ","??? ","??? ","??? " };
- static char *cmds_name[CMDS_MAX]={
- NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL };
- static char *cmds_func[CMDS_MAX]={
- NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL };
-
- void dsp_drive();
- void dsp_all();
- void dsp_file_stack();
- void dsp_one_file();
-
- int dos_err_chk(void)
- {
- if ( (Registers.Flags & 0x0001) != 0 ) {
- errno = Registers.AX.R;
- return ERR;
- } else
- return FALSE;
- }
- int chdrv(int no)
- {
- Registers.AX.R = 0x0E00;
- Registers.DX.R = no;
- calldos();
- return dos_err_chk();
- }
- int mkdir(char *name)
- {
- Registers.AX.R = 0x3900;
- Registers.DX.R = (int)name;
- Registers.DS.R = getds();
- calldos();
- return dos_err_chk();
- }
- int rmdir(char *name)
- {
- Registers.AX.R = 0x3A00;
- Registers.DX.R = (int)name;
- Registers.DS.R = getds();
- calldos();
- return dos_err_chk();
- }
- int chdir(char *name)
- {
- Registers.AX.R = 0x3B00;
- Registers.DX.R = (int)name;
- Registers.DS.R = getds();
- calldos();
- return dos_err_chk();
- }
- int getdir(char *name)
- {
- Registers.AX.R = 0x4700;
- Registers.DX.R = 0x0000;
- Registers.SI.R = (int)name+3;
- Registers.DS.R = getds();
- calldos();
- if ( dos_err_chk() != 0 )
- return ERR;
-
- Registers.AX.R = 0x1900;
- calldos();
- if ( dos_err_chk() != 0 )
- return ERR;
-
- *(name++) = 'A' + (Registers.AX.R & 0xFF);
- *(name++) = ':';
- *(name++) = '\\';
- if ( *name != '\0' )
- strcat(name,"\\");
-
- return dos_err_chk();
- }
- void disk_free(int drv)
- {
- Registers.AX.R = 0x3600;
- Registers.DX.R = drv;
- calldos();
- disk_total_free = Registers.DX.R * Registers.AX.R * Registers.CX.R;
- disk_write_free = Registers.BX.R * Registers.AX.R * Registers.CX.R;
- }
- WCBUF *wc_read(arg,mode)
- char *arg;
- int mode;
- {
- static int opflg=FALSE;
- static struct {
- unsigned char dd_dmy[22];
- unsigned short int dd_time,dd_date;
- unsigned long dd_size;
- char dd_name[13];
- } dma;
- WCBUF *wp;
-
- if ( opflg == FALSE ) {
- Registers.AX.R = 0x1A00;
- Registers.DX.R = (int)&dma;
- Registers.DS.R = getds();
- calldos();
- Registers.AX.R = 0x4E00;
- Registers.CX.R = mode;
- Registers.DX.R = (int)arg;
- Registers.DS.R = getds();
- opflg = TRUE;
- } else
- Registers.AX.R = 0x4F00;
-
- calldos();
- if ( (Registers.Flags & 0x0001) != 0 ) {
- opflg = FALSE;
- return NULL;
- }
- if ( (wp = (WCBUF *)malloc(sizeof(WCBUF))) != NULL ) {
- wp->next = NULL;
- wp->mark = ERR;
- wp->att = dma.dd_dmy[21];
- wp->date = dma.dd_date;
- wp->time = dma.dd_time;
- wp->size = dma.dd_size;
- strcpy(wp->name,dma.dd_name);
- }
- return wp;
- }
- char *subname(name)
- register char *name;
- {
- char *p;
-
- if ( strcmp(name,".") == 0 ||
- strcmp(name,"..") == 0 ||
- (p = strrchr(name,'.')) == NULL )
- while ( *name != '\0' ) name++;
- else
- name = p + 1;
- return name;
- }
- char *formname(name)
- char *name;
- {
- int i;
- char *p;
- static char tmp[16];
-
- p = subname(name);
- if ( *p != '\0' ) p--;
-
- for ( i = 0 ; name < p && i < 8 ; i++ )
- tmp[i] = *(name++);
-
- for ( ; i < 9 ; i++ )
- tmp[i] = ' ';
-
- if ( *p == '.' ) p++;
-
- while ( *p != '\0' )
- tmp[i++] = *(p++);
-
- for ( ; i < 12 ; i++ )
- tmp[i] = ' ';
-
- tmp[i] = '\0';
- return tmp;
- }
- int cmpname(sp,dp)
- WCBUF *sp,*dp;
- {
- int cd;
-
- if ( ISDIR(sp) != ISDIR(dp) )
- return ISDIR(sp) ? ERR:TRUE;
- if ( (cd = strcmp(subname(sp->name),subname(dp->name))) != 0 )
- return cd;
- return strcmp(sp->name,dp->name);
- }
- WCBUF *wc_sort(sp,dp)
- WCBUF *sp,*dp;
- {
- register WCBUF *tp;
- WCBUF tmp;
-
- tp = &tmp;
- if ( (tp->next = sp) == NULL )
- return dp;
- while ( tp->next != NULL ) {
- if ( cmpname(tp->next,dp) >= 0 )
- break;
- tp = tp->next;
- }
- dp->next = tp->next;
- tp->next = dp;
- return tmp.next;
- }
- void wc_del(wp)
- WCBUF *wp;
- {
- WCBUF *tp;
-
- while ( wp != NULL ) {
- tp = wp->next;
- free(wp);
- wp = tp;
- }
- }
- WCBUF *wc_open()
- {
- WCBUF *wp;
-
- DSP_mos(2);
-
- if ( topwp != NULL )
- wc_del(topwp);
-
- topwp = NULL;
- topno = 0;
- getdir(where);
-
- dir_count = file_count = 0;
- while ( (wp = wc_read("*.*",0x31)) != NULL ) {
- if ( ISDIR(wp) ) dir_count++; else file_count++;
- topwp = wc_sort(topwp,wp);
- }
- disk_free(0);
- DSP_mos(0);
-
- return topwp;
- }
- void SEL_file_event(EVENT *ep,int x,int y,int sw)
- {
- int i;
- WCBUF *wp;
-
- switch(ep->now) {
-
- case EVT_CLIP_MOS:
- EVT_clip_on(ep);
- case EVT_ON_MOS:
- DSP_mos(1);
- break;
-
- case EVT_SELECT_MOS:
- EVT_clip_off(ep);
- DSP_mos(0);
- if ( ep->no == 0 ) {
- sel_event = 3;
- break;
- } else if ( ep->no == (-1) ) {
- sel_event = 2;
- break;
- }
-
- wp = (WCBUF *)(ep->no);
- if ( ISDIR(wp) ) {
- chdir(wp->name);
- wc_open();
- dsp_all(topwp,0);
- } else {
- strcpy(sel_buf,where);
- strcat(sel_buf,wp->name);
-
- if ( wp->mark != FALSE ) {
- for ( i = 0 ; i < FILE_MAX ; i++ ) {
- if ( file_stack[i] != NULL &&
- strcmp(sel_buf,file_stack[i]) == 0 ) {
- free(file_stack[i]);
- file_stack[i] = NULL;
- dsp_file_stack(i);
- break;
- }
- }
- wp->mark = FALSE;
- } else {
- for ( i = 0 ; i < FILE_MAX ; i++ ) {
- if ( file_stack[i] == NULL ) {
- file_stack[i] = strdup(sel_buf);
- wp->mark = TRUE;
- dsp_file_stack(i);
- break;
- }
- }
- }
- MOS_disp(FALSE);
- dsp_one_file(wp);
- MOS_disp(TRUE);
- }
- break;
-
- case EVT_DOLACK_MOS:
- ep->now = EVT_NON;
- case EVT_MOVE_MOS:
- EVT_clip_off(ep);
- case EVT_OFF_MOS:
- DSP_mos(0);
- break;
- }
- }
- void SEL_drv_event(EVENT *ep,int x,int y,int sw)
- {
- switch(ep->now) {
-
- case EVT_CLIP_MOS:
- EVT_clip_on(ep);
- case EVT_ON_MOS:
- DSP_mos(1);
- break;
-
- case EVT_SELECT_MOS:
- EVT_clip_off(ep);
- DSP_mos(0);
- chdrv(ep->no);
- CDRV = ep->no;
- dsp_drive();
- wc_open();
- dsp_all(topwp,0);
- break;
-
- case EVT_DOLACK_MOS:
- ep->now = EVT_NON;
- case EVT_MOVE_MOS:
- EVT_clip_off(ep);
- case EVT_OFF_MOS:
- DSP_mos(0);
- break;
- }
- }
- void SEL_stack_event(EVENT *ep,int x,int y,int sw)
- {
- int i;
- WCBUF *wp;
-
- switch(ep->now) {
-
- case EVT_CLIP_MOS:
- EVT_clip_on(ep);
- case EVT_ON_MOS:
- DSP_mos(1);
- break;
-
- case EVT_SELECT_MOS:
- EVT_clip_off(ep);
- DSP_mos(0);
- if ( file_stack[ep->no] != NULL ) {
- for ( wp = topwp ; wp != NULL ; wp = wp->next ) {
- strcpy(sel_buf,where);
- strcat(sel_buf,wp->name);
- if ( strcmp(file_stack[ep->no],sel_buf) == 0 ) {
- wp->mark = FALSE;
- MOS_disp(FALSE);
- dsp_one_file(wp);
- MOS_disp(TRUE);
- break;
- }
- }
- free(file_stack[ep->no]);
- file_stack[ep->no] = NULL;
- MOS_disp(FALSE);
- dsp_file_stack(ep->no);
- MOS_disp(TRUE);
- }
- break;
-
- case EVT_DOLACK_MOS:
- ep->now = EVT_NON;
- case EVT_MOVE_MOS:
- EVT_clip_off(ep);
- case EVT_OFF_MOS:
- DSP_mos(0);
- break;
- }
- }
- void SEL_menu_event(EVENT *ep,int x,int y,int sw)
- {
- switch(ep->now) {
-
- case EVT_CLIP_MOS:
- EVT_clip_on(ep);
- case EVT_ON_MOS:
- DSP_mos(1);
- break;
-
- case EVT_SELECT_MOS:
- sel_event = ep->no;
- case EVT_DOLACK_MOS:
- ep->now = EVT_NON;
- case EVT_MOVE_MOS:
- EVT_clip_off(ep);
- case EVT_OFF_MOS:
- DSP_mos(0);
- break;
- }
- }
- void dsp_name(wp,dmy)
- register WCBUF *wp;
- char *dmy;
- {
- sprintf(dmy,"%-12s ",formname(wp->name));
- if ( ISDIR(wp) )
- sprintf(dmy + 13," <DIR> ");
- else
- sprintf(dmy + 13,"%8ld ",wp->size);
- sprintf(dmy + 22,"%02d-%02d-%02d %02d:%02d",
- 80+(wp->date >> 9),
- (wp->date >> 5) & 0x0F,
- wp->date & 0x1F,
- wp->time >> 11,
- (wp->time >> 5) & 0x3F);
- }
- void dsp_one_file(register WCBUF *tp)
- {
- int i;
- register WCBUF *wp;
- char tmp[80];
-
- wp = now_wp;
- for ( i = 0 ; wp != NULL && i < DSP_MAX ; i++ ) {
- if ( i == 0 && now_no > 0 )
- continue;
- else if ( i == (DSP_MAX - 1) && wp != NULL )
- continue;
-
- else if ( wp == tp ) {
- dsp_name(wp,tmp);
- DSP_box(DSP_X,DSP_Y+i*SPC_Y,
- DSP_X+DSP_LEN*8+4,DSP_Y+i*SPC_Y+SIZ_Y,
- BOX1_COL,
- wp->mark == FALSE ? W_BAK_COL:HIT_COL);
- wrtstr(tmp,
- page_ofs,(DSP_X+FNT_SPC)/2 + (DSP_Y+i*SPC_Y+FNT_SPC)*512,
- col_cnv[STD_COL],
- col_cnv[wp->mark == FALSE ? W_BAK_COL:HIT_COL],FNT_SIZ);
- }
- wp = wp->next;
- }
- }
-
- void dsp_all(wp,top)
- register WCBUF *wp;
- int top;
- {
- int i,j,no,cl;
- char tmp[80];
-
- now_wp = wp;
- now_no = top;
-
- EVT_level_free(300);
-
- MOS_disp(FALSE);
-
- DSP_box(DSP_X-2,DSP_Y-2,
- DSP_X+DSP_LEN*8+4+2,DSP_Y+(DSP_MAX-1)*SPC_Y+SIZ_Y+2,
- BOX1_COL,WIND_COL);
-
- DSP_box(DSP_X-2,DSP_Y+(DSP_MAX-1)*SPC_Y+SIZ_Y+4,
- DSP_X+DSP_LEN*8+4+2,DSP_Y+(DSP_MAX-1)*SPC_Y+SIZ_Y+4+SIZ_Y+2,
- BOX1_COL,WIND_COL);
-
- if ( disk_total_free > 0 ) {
- sprintf(tmp,"%9d/%-9d(%3d%%)%4d/%-4d",
- disk_total_free,disk_write_free,
- 100 - ((disk_write_free * 200) / disk_total_free) / 2,
- file_count,dir_count);
- DSP_string(tmp,DSP_X,DSP_Y+(DSP_MAX-1)*SPC_Y+SIZ_Y+7,
- STD_COL,WIND_COL);
- }
-
- for ( no = i = 0 ; wp != NULL && i < DSP_MAX ; i++ ) {
- if ( i == 0 && top > 0 ) {
- strcpy(tmp," ∧ ∧ ∧ ∧ ∧ ∧ ");
- no = 0; cl = HIT_COL;
- } else if ( i == (DSP_MAX - 1) && wp != NULL ) {
- strcpy(tmp," ∨ ∨ ∨ ∨ ∨ ∨ ");
- no = (-1); cl = HIT_COL;
- } else {
- dsp_name(wp,tmp);
- no = (int)wp;
- if ( wp->mark == ERR ) {
- wp->mark = FALSE;
- strcpy(sel_buf,where);
- strcat(sel_buf,wp->name);
- for ( j = 0 ; j < FILE_MAX ; j++ ) {
- if ( file_stack[j] != NULL &&
- strcmp(sel_buf,file_stack[j]) == 0 ) {
- wp->mark = TRUE;
- break;
- }
- }
- }
- cl = wp->mark == FALSE ? W_BAK_COL:HIT_COL;
- wp = wp->next;
- }
- EVT_sw(DSP_X,DSP_Y+i*SPC_Y,
- tmp,STD_COL,cl,
- 300,SEL_file_event,no);
- }
-
- MOS_disp(TRUE);
- }
- void dsp_drive()
- {
- int i,n;
- unsigned char tmp[200];
-
- static int drv_max=ERR;
-
- if ( drv_max == ERR ) {
- ESR_setupInfo((char *)tmp);
- drv_max = 0;
- for ( i = 0 ; i < 16 ; i++ ) {
- if ( (drive[i] = tmp[0x30 + i * 2]) != IS_NON )
- drv_max++;
- }
- drive[2] = IS_NON; /* C: drive delete */
- drive[16] = IS_CDR; /* Q: drive apend */
- }
- getdir((char *)tmp);
- CDRV = (tmp[0] - 'A');
-
- EVT_level_free(301);
-
- MOS_disp(FALSE);
-
- DSP_box(DRV_X-2,DRV_Y-2,
- DRV_X+DRV_LEN*8+4+2,DRV_Y+(drv_max-1)*SPC_Y+SIZ_Y+2,
- BOX1_COL,WIND_COL);
-
- for ( i = n = 0 ; i < DRV_MAX ; i++ ) {
- if ( drive[i] != IS_NON ) {
- sprintf((char *)tmp," %c: %s",i + 'A',dev_name[drive[i]]);
- EVT_sw(DRV_X,DRV_Y+n*SPC_Y,
- (char *)tmp,STD_COL,
- i == CDRV ? HIT_COL:W_BAK_COL,
- 301,SEL_drv_event,i);
- n++;
- }
- }
- MOS_disp(TRUE);
- }
- void dsp_clip()
- {
- int i;
- char tmp[40];
-
- EVT_level_free(302);
-
- EVT_set_node(JACK_X,2,JACK_X+4*8+4,13,302,SEL_menu_event,0);
- EVT_set_node(HELP_X,2,HELP_X+4*8+4,13,302,SEL_menu_event,5);
- EVT_set_node(EXIT_X,2,EXIT_X+4*8+4,13,302,SEL_menu_event,6);
- EVT_set_node(MIKE_X,2,MIKE_X+4*8+4,13,302,SEL_menu_event,7);
- EVT_set_node(JOHN_X,2,JOHN_X+4*8+4,13,302,SEL_menu_event,8);
- EVT_set_node(KENT_X,2,KENT_X+4*8+4,13,302,SEL_menu_event,9);
-
- MOS_disp(FALSE);
-
- DSP_string("JACK",JACK_X+2,4,COL_CHR,COL_WHIS);
- DSP_box(CMDS_X-2,CMDS_Y-2,
- CMDS_X+CMDS_LEN*8+4+2,CMDS_Y+(CMDS_MAX-1)*SPC_Y+SIZ_Y+2,
- BOX1_COL,WIND_COL);
-
- for ( i = 0 ; i < CMDS_MAX ; i++ ) {
- if ( cmds_name[i] != NULL ) {
- EVT_sw(CMDS_X,CMDS_Y+i*SPC_Y,cmds_name[i],
- i == SECRET ? 6:STD_COL,W_BAK_COL,
- 302,SEL_menu_event,10+i);
- }
- }
-
- MOS_disp(TRUE);
- }
- void dsp_file_stack(int no)
- {
- char tmp[80];
-
- sprintf(tmp,"%-28.28s",file_stack[no] != NULL ? file_stack[no]:"");
- wrtstr(tmp,
- page_ofs,(FILE_X+FNT_SPC)/2 + (FILE_Y+no*SPC_Y+FNT_SPC) * 512,
- col_cnv[STD_COL],col_cnv[W_BAK_COL],FNT_SIZ);
- }
- void dsp_file(void)
- {
- int i;
- char tmp[80];
-
- EVT_level_free(303);
-
- MOS_disp(FALSE);
-
- DSP_box(FILE_X-2,FILE_Y-2,
- FILE_X+28*8+4+2,FILE_Y+(FILE_MAX-1)*SPC_Y+SIZ_Y+2,
- BOX1_COL,WIND_COL);
-
- for ( i = 0 ; i < FILE_MAX ; i++ ) {
- sprintf(tmp,"%-28.28s",file_stack[i] != NULL ? file_stack[i]:"");
- EVT_sw(FILE_X,FILE_Y+i*SPC_Y,
- tmp,STD_COL,W_BAK_COL,
- 303,SEL_stack_event,i);
- }
-
- MOS_disp(TRUE);
- }
- int SEL_file(void)
- {
- int i,n,fg=ERR,now_act;
- WCBUF *wp;
- char *file=NULL;
- BLOCK *save[4];
-
- macset("MODE","OPEN");
- now_act = macval("ACTWIND");
- macvalset("ACTWIND",3);
- macvalset("WIND",3);
- MSG_wind(WIND_MSG);
-
- for ( i = 0 ; i < FILE_MAX ; i++ )
- file_stack[i] = NULL;
-
- /*********************************
- MOS_disp(FALSE);
- save[0] = DSP_push_vram(CMDS_X-2,CMDS_Y-2,
- CMDS_X+CMDS_LEN*8+4+2,CMDS_Y+(CMDS_MAX-1)*SPC_Y+SIZ_Y+2);
- save[1] = DSP_push_vram(DRV_X-2,DRV_Y-2,
- DRV_X+DRV_LEN*8+4+2,DRV_Y+(DRV_MAX-1)*SPC_Y+SIZ_Y+2);
- save[2] = DSP_push_vram(DSP_X-2,DSP_Y-2,
- DSP_X+DSP_LEN*8+4+2,DSP_Y+(DSP_MAX-1)*SPC_Y+SIZ_Y+2);
- save[3] = DSP_push_vram(FILE_X-2,FILE_Y-2,
- FILE_X+28*8+4+2,FILE_Y+(FILE_MAX-1)*SPC_Y+SIZ_Y+2);
- **********************************/
- dsp_clip();
- dsp_drive();
- dsp_file();
- wc_open();
- dsp_all(topwp,0);
-
- for ( ; ; ) {
-
- sel_event = ERR;
- TIME_dsp();
- EVT_loop(300);
-
- if ( sel_event == 0 ) {
- break;
-
- } else if ( sel_event == 5 ) {
- MSG_wind(HELP_MSG);
-
- } else if ( sel_event == 6 ) {
- fg = 6;
- break;
-
- } else if ( sel_event == 7 ) {
- fg = 1;
- break;
-
- } else if ( sel_event == 8 ) {
- fg = 2;
- break;
-
- } else if ( sel_event == 9 ) {
- fg = 3;
- break;
-
- } else if ( sel_event == 2 ) {
- wp = topwp;
- n = topno + (topno > 0 ? (DSP_MAX-2):(DSP_MAX-1));
- for ( i = 0 ; i < n && wp != NULL ; i++ )
- wp = wp->next;
- if ( wp != NULL ) {
- topno = n;
- dsp_all(wp,topno);
- }
-
- } else if ( sel_event == 3 ) {
- if ( topno > 0 ) {
- topno -= (topno > (DSP_MAX-1) ? (DSP_MAX-2):(DSP_MAX-1));
- for ( i = 0 ,wp = topwp ; i < topno && wp != NULL ; i++ )
- wp = wp->next;
- dsp_all(wp,topno);
- }
- } else if ( sel_event >= 10 && sel_event < (CMDS_MAX+10) ) {
- sel_buf[0] = '\0';
- for ( i = 0 ; i < FILE_MAX ; i++ ) {
- if ( file_stack[i] != NULL ) {
- strcat(sel_buf,file_stack[i]);
- strcat(sel_buf," ");
- }
- }
- macset("FILE",sel_buf);
- n = MSG_wind(cmds_func[sel_event-10]);
-
- dsp_clip();
- if ( n == 0 ) {
- for ( i = 0 ; i < FILE_MAX ; i++ ) {
- if ( file_stack[i] != NULL ) {
- free(file_stack[i]);
- file_stack[i] = NULL;
- }
- }
- dsp_drive();
- dsp_file();
- wc_open();
- dsp_all(topwp,0);
- }
- }
-
- }
-
- EVT_level_free(300);
- EVT_level_free(301);
- EVT_level_free(302);
- EVT_level_free(303);
-
- wc_del(topwp);
- topwp = NULL;
-
- for ( i = 0 ; i < FILE_MAX ; i++ ) {
- if ( file_stack[i] != NULL )
- free(file_stack[i]);
- }
-
- MOS_disp(FALSE);
- /***************************
- DSP_pop_vram(save[0]);
- DSP_pop_vram(save[1]);
- DSP_pop_vram(save[2]);
- DSP_pop_vram(save[3]);
- ****************************/
- DSP_string("JACK",JACK_X+2,4,COL_WHIS2,COL_WHIS);
-
- WIN_resize();
-
- MOS_disp(TRUE);
-
- macset("MODE","CLOSE");
- MSG_wind(WIND_MSG);
- macvalset("ACTWIND",now_act);
-
- return fg;
- }
- int CMDS_init(char *argv[])
- {
- int i;
- char tmp[16];
-
- for ( i = 0 ; i < CMDS_MAX ; i++ ) {
- if ( cmds_name[i] != NULL ) {
- free(cmds_name[i]);
- free(cmds_func[i]);
- cmds_name[i] = NULL;
- cmds_func[i] = NULL;
- }
- if ( *argv != NULL ) {
- if ( *argv[0] != '\0' ) {
- sprintf(tmp,"%-8.8s",*(argv++));
- cmds_name[i] = strdup(tmp);
- cmds_func[i] = strdup(*(argv++));
- } else
- argv += 2;
- }
- }
- return i;
- }